总结:深入理解java虚拟机(一)

本人jvm小白,前段时间想学习下jvm的知识,于是找到了《深入理解java虚拟机——jvm高级特性与最佳实践》这本书,目前看了将近一半了,觉得这本书比较适合jvm初级接触者,能从中学习到许多基础的东西;

下面就将第一阶段看的内容总结一下:
(1)第一部分:走进java
这一部分是介绍了java的发展史和jvm的发展史

a)
JDK:java程序设计语言 + jvm + java api类库
JRE:jvm + java api类库
要想pc上跑java代码,只要jre就可以了,开发的话需要jdk

b)java所包含的东西和java发展史
java所包含的东西
发展史

c)jvm发展史
目前最优秀的2款jvm是JRockit和HotSpot,目前都被Oracle收购了,目前已经慢慢将JRockit的优点向HotSpot转移,整合到一个了;

d)作者展望了一下java未来的发展趋势
模块化(jigsaw) + 混合语言 + 并行 + 丰富的语法 + 64位虚拟机
看来预测的比较准确呢

e)编译jdk,有兴趣的可以试一下~

(2)第二部分:自动内存管理机制
这一部分主要介绍了java内存区域,gc,虚拟机故障处理和调优

a)java虚拟机运行时数据区
java虚拟机运行时数据区

b)常见异常
OOM:OutOfMemoryError
堆溢出,虚拟机栈和本地方法栈溢出,方法区和运行时常量区溢出,本机直接内存溢出

c)怎样判断对象可以回收
引用计数法:难解决对象间循环引用
可达性分析法:可解决循环应用问题

d)垃圾回收算法有哪些
标记清除
复制
标记整理
标记清除整理
分代收集

e)垃圾收集器
Serial
ParNew
Parallel Scavenge

CMS
Serial Old
Parallel Old

G1
hotspot虚拟机垃圾收集器

f)gc的一些配置参数
VM_OPTS="-Duser.timezone=GMT+08
-XX:-UseAdaptiveSizePolicy
-Xmx3072m
-Xms2304m
-Xmn1152m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:SurvivorRatio=8
-Xss1m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=KaTeX parse error: Expected 'EOF', got '\ ' at position 26: …R}/oomheap.bin \̲ ̲-XX:+UseParNewG…{JVMLOG_DIR}/gc-KaTeX parse error: Expected 'EOF', got '\ ' at position 10: DATE.log \̲ ̲-XX:ErrorFile={JVMLOG_DIR}/hs_error%p.log
-Xnoclassgc"

g)虚拟机的一些辅助工具
命令行工具:命令行
jps查看进程
jps查看进程
jstat主要用于监控虚拟机的各种运行状态信息,如类的装载、内存、垃圾回收、JIT编译器等
jstat
jstat
jinfo查看虚拟机的各项参数信息
jinfo
jmap用于生成堆快照(heapdump)
jmap
jmap
jhat是用来分析dump文件的一个微型的HTTP/HTML服务器(然而实际中我们很少使用这个工具,因为一般服务器上设置的堆、栈内存都比较大,生成的dump也比较大,直接用jhat容易造成内存溢出)

jstack用于JVM当前时刻的线程快照:jstack -l 4436
jstack
可视化工具:
jconsole
jconsole
jvisualvm
jvisualvm

h)调优案例
这一部分内容要亲身经历才能体会,我也遇到过几次线上问题,每次都好难找出原因QAQ

ig牛逼!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值